package com.xinqi.modules.databank.v2.service.resource;

import com.xinqi.common.core.enums.StudentSwitchType;
import com.xinqi.modules.databank.dto.req.*;
import com.xinqi.modules.databank.dto.rsp.ResourceResponseDTO;
import com.xinqi.modules.databank.dto.rsp.ResourceStatisticsDTO;
import com.xinqi.modules.databank.dto.rsp.ResourceStatisticsStatsDTO;
import com.xinqi.modules.databank.v2.domain.CourseResourceEntity;

import java.util.List;

/**
 * 资料库-资料-方法
 * @author dzy
 */
public interface CourseResourceDataService {

    /**
     * 新增 资料
     * @param resource 资料添加对象
     */
    void addResource(CourseResourceDataCreateDTO resource);

    /**
     * 修改 资料
     * @param resource 资料实体
     */
    void updateResource(CourseResourceDataUpdateDTO resource);

    /**
     * 一键发布 资料 信息
     * @param id 资料ID
     * @author dzy
     */
    Boolean releaseResourceData(Long id);

    /**
     * 一键发布 资料 信息 V2版本
     * @param id 资料ID
     * @author dzy
     */
    Boolean releaseResourceDataV2(Long id);

    /**
     * 定时发布 资料 信息
     * @param entity 资料实体
     * @author dzy
     */
    Boolean timingPublish(CourseResourceEntity entity);

    /**
     * 同步对应的资料数据
     */
    void syncResourceInfo(CourseResourceEntity entity);


    /**
     * 下载资料文件
     * @param downloadDto 下载资料实体
     * @return Boolean
     * @author dzy
     */
    List<String> downResourceData(DownloadDTO downloadDto);

    /**
     * 老师端已发布互动课件列表
     * @param contentId 资料ID
     * @return ResourceResponseDTO 返回详情对象
     * @author dzy
     */
    ResourceResponseDTO getResourceDataInfo(Long contentId);

    /**
     * 查询资料统计信息
     * @param resourceQueryDTO 课程ID
     * @return List<ResourceStatisticsDTO> 集合
     * @author dzy
     */
    List<ResourceStatisticsDTO> resourceStatistics(ResourceQueryDTO resourceQueryDTO);


    /**
     * 查询资料统计信息-带统计信息
     * @param resourceQueryDTO
     * @return List<ResourceStatisticsDTO> 集合
     * @author dzy
     */
    ResourceStatisticsStatsDTO resourceStatisticsALl(ResourceQueryDTO resourceQueryDTO);

}
